Alteryx ServerをSSL化させたい!AWS Certificate Managerで無償のSSL証明書を取得してGalleryにALB経由でアクセスする環境を作ってみた
ALB(Application Load Balancer)、いいですよね。「Alteryx ServerのGalleryにアクセスするのにhttpsで接続したい…」「無償の証明書を使いたい…」なんて時には特にいいですよね。 今回の検証ではRoute 53で.net
ドメインを取っておりEC2の利用費のほか年間11ドルほどコストはかかるのですが、ACM(AWS Certificate Manager)であれば証明書自体にコストはかかりませんし、自動で更新もしてくれます。ドメインを取る機会があったので、ALB経由でAlteryx Serverにアクセスする環境を作ってみました。
もくじ
- 前提条件
- Alteryx Server用のEC2インスタンスを作成する
- Route 53でドメインを取得する
- ACM(AWS Certificate Manager)でSSL証明書を取得する
- ALB(Application Load Balancer)を作成する
- Route 53でレコードセットの生成をする
- EC2インスタンス(Alteryx Server)をSSL化する
- Alteryx Serverの設定をする
- EC2インスタンスのセキュリティグループの設定をする
- 最後に
前提条件
検証のために使った環境は以下の通り。
- Alteryx Server 2019.2
- Windows Server 2012 Standard R2 on AWS EC2
構成図は以下の通りです。
Alteryx Server用のEC2インスタンスを作成する
まずはAlteryx Server用のEC2インスタンスを作成してみましょう。Alteryx Serverがすでにインストールされた状態のEC2インスタンスを立ち上げることのできるAMI(Amazon マシンイメージ)がありますので、今回はこちらを使用します。AWS Marketplaceより「Alteryx Server(Bring your own license)」を選択します。
任意のインスタンスタイプを選択します。今回は検証用なのでm5.2xlargeを選択しています。
セキュリティグループは今回のために新しいものを作成しました。後ほどALB経由のみのアクセスを許可するように変更するので、今のところはHTTPとRDPのアクセスをマイIPからのみ許可するに留めます。
インスタンス作成の確認画面が表示されます。起動ボタンを押すと作成完了です。
EC2が起動できたらリモートデスクトップできるように準備します。作成されたEC2インスタンスを右クリックし、「Windowsパスワードの取得」を選択します。
新しいキーペアを作成する場合は任意のキーペア名を入力し、「キーペアのダウンロード」をクリックすると.pemファイルがダウンロードされます。言うまでもないですが失くさないように大切にしましょう…
デフォルト用のWindows管理者パスワードの取得の「ファイルを選択」で先ほどダウンロードしたキーペアを選択し、「パスワードの複合」するとリモートデスクトップに接続するためのパスワードが取得できます。
これでリモートデスクトップ接続するための環境は整いました。Alteryx Server自体の設定は最後に行います。
Route 53でドメインを取得する
Route 53で取得したいドメイン名が決まっていればサクッとドメインを取得できます。(私の所属チームにどんなドメイン名がいいか相談したらドメイン名大喜利が始まってなかなか決まりませんでした…)
入力画面に取得したいドメイン名を入力します。ステータスが使用可能となっているのを確認して「カートに入れる」を選択し、続行します。
次に、登録者の連絡先を入力して続行ボタンを押します。
確認画面が表示されます。登録者の連絡先のEメールアドレスを入力すると、Verify用のURLが記載されたメールが送信されます。URLをクリックすると認証が完了し、確認画面のステータスが変わります。「購入の完了」をクリックします。
ドメインのレジスターが完了すると以下のようなメールが通知されます。
Route 53のホストゾーンからも確認できます。
ACM(AWS Certificate Manager)でSSL証明書を取得する
今回はAlteryx ServerをSSL化した環境で使用したいのでACMで証明書を取得しておきます。マネジメントコンソールでACMの画面にアクセスし、「証明書のリクエスト」を選択します。
先ほどRoute 53で取得したドメイン名を入力します。サブドメインにも証明書を適用したいので、今回はアスタリスクを使って*.example.com
のような形で入力しています。
検証方法にはDNSの検証を利用しています。CNAMEレコードを登録していれば自動で証明書更新をしてくれるDNS検証が便利です。CNAMEレコードの登録については後述しますが、Route 53でドメインを取得している場合は瞬きをしている間に登録できます。
入力内容を確認して「確定とリクエスト」ボタンを押します。 証明書が検証保留中のステータスとなりました。前述したとおり、DNS検証を選択している場合はドメインのDNS設定にCNAMEレコードを追加する必要があります。「Route 53でのレコードの作成」をクリックすることでレコードが追加されます。
クリックするとステータスが成功に変わります。検証が完了するまでしばらく待ちましょう。
ALB(Application Load Balancer)を作成する
ALBを選択します。
ロードバランサーのプロトコロルにはHTTPSを選択し、アベイラビリティゾーンを2つ以上選択します。
先ほど作成したACMを選択します。
任意のセキュリティグループを選択します。全開放であれば問題はないのですが、特定のIPアドレスからのみのアクセスを許可にしている場合、EC2のPublic IP(EIP)もhttpsで接続できるように設定しておく必要があります。これは、Alteryx ServerからALBに対してアクセス可能かどうかを確認するためです。ここの疎通が確認できないとAlteryx Serviceが停止する原因となります。
ルーティングの設定画面に移ります。ターゲットグループのプロトコルにHTTPSを選択し、ヘルスチェックパスには「/health_check」と入力しています。このヘルスチェックパスは後ほどEC2にインストールしたIIS側の設定で決めるので任意のもので構いません。
ターゲットにはAlteryx ServerがインストールされているEC2インスタンスを選択し、登録済みに追加します。
設定内容の確認画面をチェックして作成ボタンを押せばロードバランサーの作成は完了します。
Route 53でレコードセットの生成をする
取得したドメインとEC2インスタンスの紐付けをします。ACMでの証明書作成時に「Route 53でのレコードの作成」をクリックしたのですでにCNAMEが設定された状態となっていますね。今回はサブドメインでAlteryx Serverにアクセスさせるため、名前に「ayx-test」を入力しました。
「レコードセットの作成」をクリックしてタイプに「A-IPv4アドレス」を選択し、エイリアス「はい」を選択するとエイリアス先を選べるようになります。先ほど作成したALBを選択し、レコードセットの保存を押します。
EC2インスタンス(Alteryx Server)をSSL化する
ALBからAlteryx Server経由のアクセスはhttpsで実施します。これは、Alteryx ServerのGalleryにアクセスするためのアドレス(Base Address)をSystem Settingsにて指定する必要がありますが、サーバーがSSL化されていない状態ではhttpsはじまりのアドレスを指定できないためです。外部からALBへのアクセスはACMで取得した正規のSSL証明書があるため、EC2インスタンス自体は自己署名証明書で構いません。
Alteryx Communityのナレッジベースにも以下の通りAlteryx Serverで自己署名証明書を使用する方法が紹介されています。
せっかくWindows Serverを使っていますし、クリック数回で自己署名証明書を作成できるIISを今回は使用しています。設定は以下の通り。
ARRの構成
後述するURL書き換えを実施するため、Application Request Routing(ARR)の設定を行います。「Application Request Routing Cashe」を選択します。
「Server Proxy Settings」を選択します。
「Enable Proxy」にチェックを入れます。
URL書き換え
ALBのヘルスチェックを受けるためのカスタムレスポンスを作成しましょう。「URL Rewrite」を選択します。
右上の「Add Rules」を選択します。
テンプレートは「Blank Rule」を選択します。
PatternsにはALBで指定したヘルスチェックパスを指定します。今回は/health_check
を使用しています。
Actionsは「Custom Response」を指定し、このURLにアクセスされた際には常にステータスコード:200を返すように指定します。
自己証明書の作成
最後にIISで自己署名証明書を作成し、Webサイトにバインドします。「Server Certificates」を選択します。
「Create Self-Signed Certificate」を選択します。
任意の名前をつけてOKを押します。これで自己署名証明書が作成されました。
次にWebサイトにバインドします。右側メニューから「Bidings」を選択します。
「Add」を選択します。
Typeには「https」を指定し、先ほど作成した自己署名証明書をドロップダウンリストから選択してOKを押します。これでバインドは完了です。
Alteryx Serverの設定をする
EC2インスタンスにリモートデスクトップ接続し、Alteryx Serverの設定をします。デスクトップにあるAlteryx Server System Settingsから設定をすすめていきましょう。 右下のNextボタンを押して「Gallery」まで進みます。Base Addressに設定する値は、Galleryにアクセスする際に指定するURLです。「Enable SSL」にチェックを入れることもお忘れなく。
認証方式など、その他の設定を任意の値を指定します。認証方式は後から変更ができないので注意してください。今回はBuild-in Authを指定していますが、同じ構成でSAML認証を使用する場合は以下エントリをご参照ください。
EC2インスタンスのセキュリティグループの設定をする
すでにGalleryには設定したドメインでアクセスできる状態ですが、最後にセキュリティグループを設定しておきましょう。今の状態ではEC2インスタンスのエンドポイントにアクセスできる状態となっています。ALB経由でのみEC2インスタンスにアクセスできるように設定します。
作成したALBのセキュリティグループを……
EC2のセキュリティグループに入力します。この設定でALB経由のhttpsアクセスと、特定IPからのリモートデスクトップ接続のみが可能となります。
想定するURLでGalleryにアクセス可能なことが確認できました!
最後に
Alteryx Serverを無料の証明書でSSL化させ、Route 53でドメインを取ってALB経由でGalleryにアクセスする環境を作ってみるの巻でした。ブログを書くたびにAlteryxのサポートエンジニアでありながらAWSの知識がついてきて喜ばしい限りです。ALBのことがだんだん好きになってきました。 Alteryx ServerのSSL化にお悩みの方のお役に立てば幸いです。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。